home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / bakfiles.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  125 lines

  1. # Written by Renaud Deraison <deraison@nessus.org>
  2. #
  3. #
  4. # This plugin uses the data collected by webmirror.nasl to try
  5. # to download a backup file old each CGI (as in foo.php -> foo.php.old)
  6.  
  7.  
  8. if(description)
  9. {
  10.  script_id(11411);
  11.  script_version ("$Revision: 1.11 $");
  12.  
  13.  name["english"] = "Backup CGIs download";
  14.  script_name(english:name["english"]);
  15.  
  16.  desc["english"] = "
  17. This script attempts to download a backup file of each
  18. CGI by doing a GET request on the name of each CGI, followed by
  19. a .bak, ~ or .old.";
  20.  
  21.  
  22.  
  23.  script_description(english:desc["english"]);
  24.  
  25.  summary["english"] = "Attempts to download the remote CGIs";
  26.  
  27.  
  28.  script_summary(english:summary["english"]);
  29.  
  30.  script_category(ACT_GATHER_INFO);
  31.  
  32.  
  33.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison",
  34.         francais:"Ce script est Copyright (C) 2003 Renaud Deraison");
  35.  family["english"] = "CGI abuses";
  36.  family["francais"] = "Abus de CGI";
  37.  script_family(english:family["english"], francais:family["francais"]);
  38.  script_dependencie("find_service.nes", "webmirror.nasl", "http_version.nasl");
  39.  script_require_ports("Services/www", 80);
  40.  exit(0);
  41. }
  42.  
  43.  
  44. include("http_func.inc");
  45. include("http_keepalive.inc");
  46.  
  47.  
  48. port = get_http_port(default:80);
  49.  
  50.  
  51. if(!get_port_state(port))exit(0);
  52.  
  53. list = make_list();
  54.  
  55. t = get_kb_list(string("www/", port, "/cgis"));
  56. if(!isnull(t)){
  57.     foreach c (t)
  58.     s = strstr(c, " - ");
  59.     c = c - s;
  60.     list = make_list(list, c);
  61.     }
  62.  
  63.  
  64. t = get_kb_list(string("www/", port, "/content/extensions/asp"));
  65. if(!isnull(t))list = make_list(list, t);
  66.  
  67. t = get_kb_list(string("www/", port, "/content/extensions/jsp"));
  68. if(!isnull(t))list = make_list(list, t);
  69.  
  70. t = get_kb_list(string("www/", port, "/content/extensions/php"));
  71. if(!isnull(t))list = make_list(list, t);
  72.  
  73. t = get_kb_list(string("www/", port, "/content/extensions/php3"));
  74. if(!isnull(t))list = make_list(list, t);
  75.  
  76. t = get_kb_list(string("www/", port, "/content/extensions/php4"));
  77. if(!isnull(t))list = make_list(list, t);
  78.  
  79. t = get_kb_list(string("www/", port, "/content/extensions/cfm"));
  80. if(!isnull(t))list = make_list(list, t);
  81.  
  82.  
  83. list = make_list(list, "/.htaccess");
  84.  
  85.  
  86. exts = make_list(".old", ".bak", "~", ".2", ".copy", ".tmp", ".swp", ".swp");
  87. prefixes = make_list("", "",     "",  "",   "",      "",     "",      ".");
  88.  
  89. oldfiles = make_list();
  90. foreach f (list)
  91. {
  92.  this_oldfiles = make_list();
  93.  num_match = 0;
  94.  for ( i = 0; exts[i]; i ++ )
  95.  {
  96.    if(is_cgi_installed_ka(port:port, item:string(prefixes[i], f, exts[i])))
  97.    {
  98.      this_oldfiles = make_list(this_oldfiles, string(f, exts[i]));
  99.      num_match ++;
  100.    }
  101.  }
  102.  # Avoid false positives
  103.  if(num_match < 5) oldfiles = make_list(oldfiles, this_oldfiles);
  104. }
  105.  
  106. report = NULL;
  107.  
  108. foreach f (oldfiles)
  109. {
  110.   report += f + '\n';
  111. }
  112.  
  113. if( report != NULL )
  114.   {
  115.     report = "
  116. It seems that the source code of various CGIs can be accessed by 
  117. requesting the CGI name with a special suffix (.old, .bak, ~ or .copy)
  118.  
  119. Here is the list of CGIs Nessus gathered :
  120. " + report + '\n\nYou should delete these files.';
  121.  
  122.   security_hole(port:port, data:report);
  123.  
  124.   }
  125.